package cn.xopencode.oss.rpc.permission;

import cn.xopencode.common.framework.vo.CommonResult;
import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.oss.rpc.permission.dto.PositionCreateDTO;
import cn.xopencode.oss.rpc.permission.dto.PositionPageDTO;
import cn.xopencode.oss.rpc.permission.dto.PositionUpdateDTO;
import cn.xopencode.oss.rpc.permission.vo.PositionVO;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
* 职务 Rpc 接口
*/
public interface PositionRpc {

    /**
    * 创建职务
    *
    * @param createDTO 创建职务 DTO
    * @return 职务编号
    */
    CommonResult<String> createPosition(PositionCreateDTO createDTO);

    /**
    * 更新职务
    *
    * @param updateDTO 更新职务 DTO
    */
    CommonResult<Boolean> updatePosition(PositionUpdateDTO updateDTO);

    /**
    * 删除职务
    *
    * @param positionId 职务编号
    */
    CommonResult<Boolean> deletePosition(String positionId);

    /**
    * 获得职务
    *
    * @param PositionId 职务编号
    * @return 职务
    */
    CommonResult<PositionVO> getPosition(String PositionId);

    /**
     * 获得所有职务
     *
     * @return 职务列表
     */
    CommonResult<List<PositionVO>> listAllPositions();

    /**
    * 获得职务列表
    *
    * @param PositionIds 职务编号列表
    * @return 职务列表
    */
    CommonResult<List<PositionVO>> listPositions(Collection<String> PositionIds);

    /**
    * 获得职务分页
    *
    * @param pageDTO 职务分页查询
    * @return 职务分页结果
    */
    CommonResult<PageResult<PositionVO>> pagePosition(PositionPageDTO pageDTO);


}
